var _fMacId = -1;
var _fMacName;
var hiddenNodes=[];	//用于存储被隐藏的结点
var zTreeObj;
/*
 * @Description: 预加载
 * @param : 
 */
$(document).ready(function() {
	resizeIframeHight();
	fnResize();
	
	setTimeout(function() {
		loadingCustom("正在加载设备树。。。");
		$.ajax({
			type: "POST",
			url:pathUrl("macinegroup/getMachineGroupTree.action"),
			success: function(data) {
//      		console.log(data);
				treeData = data;
				zTreeObj = $.fn.zTree.init($("#deviceTree"),setting,treeData);
//      		var treeObj = $.fn.zTree.getZTreeObj("deviceTree"); 
//      		treeObj.expandAll(true); 
				setTimeout(function(){
					swal.close();//关闭sweetAlert2提示框
				}, 10);
			},
			error: function(request) {
				swal_Tips_Error();
			}
		});
//	$.fn.zTree.init($("#deviceTree"), setting);
		initAssociatedTable();
	}, 100);
});
/*
 * @Description: 查询设备输入框输入事件
 * @param : 
 */
function search(){
	searchZtree();
}
/*
 * @Description: 用户树的操作
 * @param : 
 */
var setting = {
/*	async : {
		enable : true,
		url : pathUrl("macinegroup/getMachineGroupTree.action"),
		type : "POST",
		dataFilter : filter
	},*/
	view : {
		dblClickExpand : false,
		selectedMulti : false,
		showIcon : false
	},
	edit : {
		enable : true,
		showRemoveBtn : false,
		showRenameBtn : false
	},
	data : {
		/*
		 * keep: { parent:true, leaf:true },
		 */
		simpleData : {
			enable : true,
		}
	},
	callback : {
		onClick : onClick
	}
};

/*
 * @Description: 过滤设备列表显示数据
 * @param : 
 */
function searchZtree() {
	// 显示上次搜索后背隐藏的结点
	zTreeObj.showNodes(hiddenNodes);
	// 查找不符合条件的叶子节点
	var _keywords = "";
	function filterFunc(node) {
		_keywords = $("#deviceName").val();
		if (node.isParent || node.name.indexOf(_keywords) != -1)
			return false;
		return true;
	};
	// 获取不符合条件的叶子结点
	hiddenNodes = zTreeObj.getNodesByFilter(filterFunc);
	// 隐藏不符合条件的叶子结点
	zTreeObj.hideNodes(hiddenNodes);
	
	var treeObj = $.fn.zTree.getZTreeObj("deviceTree"); 
	if(_keywords == ""){
		treeObj.expandAll(false); 
	}else{
		treeObj.expandAll(true); 
	}
}
/*
 * @Description: 对返回的json数据进行处理
 * @param : treeId	对应zTree的treeId
 * @param : parentNode	进行异步加载的父节点 JSON 数据对象
 * @param : childNodes	异步加载获取到的数据
 */
function filter(treeId, parentNode, childNodes) {
	//	console.log(childNodes);
	if (!childNodes)
		return null;
	for ( var i = 0, l = childNodes.length; i < l; i++) {
		if (childNodes[i].pId == -1) {
			childNodes[i].open = "true";
		}
	}
	return childNodes;
}

/*
 * @Description: 点击节点事件
 * @param : event	js event对象
 * @param : treeId	对应zTree的treeId
 * @param : treeNode	被点击的节点JSON数据对象
 * @param : clickFlag	节点被单击后的选中类型
 */
function onClick(event, treeId, treeNode, clickFlag) {
	var type = treeNode.flag;
	var zTree = $.fn.zTree.getZTreeObj("deviceTree");
//	console.log(treeNode)
	if(type == "machineGroup"){
		zTree.expandNode(treeNode);//点击设备组，展开设备列表
		_fMacId = -1;
		initAssociatedTable();
		_fMacName = "";
	}else if(type == "machine"){
		_fMacId = treeNode.id;
		initAssociatedTable();
		_fMacName = treeNode.name;
	}
	$("#deviceTitle").text(_fMacName + "设备关联员工");
}

/*
 * @Description: 添加按钮点击事件
 * @param : 
 */
$("#addEmployees").click(function(){
	if(_fMacId == -1){
		swal_Tips("请选择设备！");
		return false;
	}
	$(".clean_C").val("");
	initEmployeesTable();
	$("#addEmployeesModal").modal('show');
});

/*
 * @Description: 初始化设备关联员工表
 * @param : 
 */
function initAssociatedTable(){
	$('#associatedTable').bootstrapTable('destroy').bootstrapTable({
		url : pathUrl("machineEmp/findByCondition.action"),//请求后台的URL
//		height : 242,//行高
		method : "POST",//请求方式
		cache : false,//是否使用缓存，默认为true
		pagination : true,//是否显示分页
		pageNumber : 1,//初始化加载第几页
		pageSize : 10,//每页的记录行数
		sidePagination : "server", // 分页方式：client客户端分页，server服务端分页
		pageList : [ 10, 30, 60, 100, 'All'],//可供选择的每页的行数
		queryParams : function(params){//传递参数
			var data= {};
			data.offset = params.offset;
			data.row = params.limit;
			data.fMacId = _fMacId;//设备ID
			return data;
		},
		dataType : 'JSON',//数据类型
		uniqueId : "id",//每一行的唯一标识，一般为主键列
		columns : [
		{
			field : "fWorker",
		    align : 'center',
		    valign: 'middle',
//			sortable : true,
		    title : '员工号'
		},{
		    field : "fWorkerName",
		    align : 'center',
		    valign: 'middle',
//			sortable : true,
		    title : '员工姓名'
		},{
		    field : 'operate',//如需导出execl field必填operate，否则操作行会被导出
		    align : 'center',
		    valign: 'middle',
		    title : '操作',
		    formatter : function(value,row,index){
		        return '<button type="button" class="btn btn-danger delete" style="font-size:12px;">删除</button>';
		    },
		    events : operateEvents
		 }]
	});
}
/*
 * @Description: 添加员工模态框查询按钮点击事件
 * @param : 
 */
$("#query").click(function(){
	initEmployeesTable();
});
/*
 * @Description: 添加员工模态框重置按钮点击事件
 * @param : 
 */
$("#resetting").click(function(){
	$(".clean_C").val("");
	initEmployeesTable();
});
/*
 * @Description: 初始化员工表（添加员工模态框里）
 * @param : 
 */
function initEmployeesTable(){
	$('#employeesTable').bootstrapTable('destroy').bootstrapTable({
		url : pathUrl("emp/findByCondition.action"),//请求后台的URL
//		height : 242,//行高
		method : "GET",//请求方式
		cache : false,//是否使用缓存，默认为true
		pagination : true,//是否显示分页
		pageNumber : 1,//初始化加载第几页
		pageSize : 10,//每页的记录行数
		sidePagination : "server", // 分页方式：client客户端分页，server服务端分页
		pageList : [ 10, 15, 30, 60, 100, 'All'],//可供选择的每页的行数
		queryParams : function(params){//传递参数
			var data= {};
			data.offset = params.offset;
			data.row = params.limit;
			data.fNumber = $("#fNumber").val();//员工号
			data.fName = $("#fName").val();//员工姓名
			return data;
		},
		dataType : 'JSON',//数据类型
		uniqueId : "id",//每一行的唯一标识，一般为主键列
		columns : [
		{
			field : "fNumber",
		    align : 'center',
		    valign: 'middle',
//			sortable : true,
		    title : '员工号'
		 },{
		    field : "fName",
		    align : 'center',
		    valign: 'middle',
//			sortable : true,
		    title : '员工姓名'
		 }],
		 onDblClickRow : function(row, $element){
			 $.ajax({
				url : pathUrl("machineEmp/addNew.action"),
				type : "POST",
				dataType : "JSON",
				data : {'fMacId':_fMacId,'fMacName':_fMacName,'fWorker':row.fNumber,'fWorkerName':row.fName},
				success : function(data) {
					if (data.code == "0000") {
//						$("#addEmployeesModal").modal('hide');
						$('#associatedTable').bootstrapTable('refresh');
						swal_Tips_Short(data.message);
					} else if (data.code == "9999") {
						swal_Tips(data.message);
					}
				},
				error : function(request) {
					swal_Tips_Error();
				}
			});
		 }
	});
}

/*
 * @Description: 表操作事件
 * @param :
 */
window.operateEvents= {
	'click .delete' : function(e, value, row, index) {//删除员工
//		console.log(row)
		showSwal(
			'删除',
			'您确定删除这个员工吗？',
			'是的，确定删除',
			function(result){//isConfirm 点击确定按钮，参数true/false
				if(result.value){
					//showLoading();//显示正在提交中
					$.ajax({
						url : pathUrl("machineEmp/delete.action"),
						type : "POST",
						dataType : "JSON",
						data : {'fMacId':row.fMacId,'fWorker':row.fWorker},
						success : function(data) {
							if (data.code == "0000") {
								initAssociatedTable();
								swal_Tips_Short(data.message);
							} else if (data.code == "9999") {
								swal_Tips(data.message);
							}
						},
						error : function(request) {
							swal_Tips_Error();
						}
					});
				}
			}
		);
	}
}
/*
 * @Description: 浏览器窗口大小改变后：
 * 				 class为ztree，divClassLeft，divClassRight的高度随之改变，
 * 				 divClassLeft的最大高度和最小高度随之改变
 * @param :
 */
function fnResize() {
	var height = $(window).height() - 15;//获取浏览器窗口大小
	document.getElementsByClassName("divClassLeft")[0].style.height = height +"px";
	document.getElementsByClassName("divClassLeft")[0].style.maxHeight = height +"px";
	document.getElementsByClassName("divClassLeft")[0].style.minHeight = height +"px";
	document.getElementsByClassName("divClassRight")[0].style.height = height +"px";
	document.getElementsByClassName("divClassRight")[0].style.maxHeight = height +"px";
	document.getElementsByClassName("divClassRight")[0].style.minHeight = height +"px";
	document.getElementById("deviceTree").style.height = (height - 50) +"px";
}
/*
 * @Description: 浏览器窗口大小自适应
 * @param :
 */
$(window).resize(function() {
	window.setTimeout(function() {
		fnResize();
	}, 0);
});
/*
 * @Description: 查询条件按回车事件
 * @param :
 */
$("#fNumber,#fName").keypress(function(event){
	if(event.keyCode == "13"){
		initEmployeesTable();
	}
});